12.2 ゴルーチン
ゴルーチンは以下の長所があるため、複数のゴルーチンを同時に動かすことができる
OSレベルのリソースを生成している訳ではないので、ゴルーチンの生成はスレッドの生成より速い
ゴルーチンの当初のスタックサイズはスレッドのスタックサイズよりも小さくなる。そして必要に応じて大きくできる。これによりゴルーチンはメモリを効率的に利用できる
一つのプロセス内で行われるので、比較的遅いシステムコールを回避でき、ゴルーチンのスイッチングの方がスレッドのスッチングよりも速い
同一プロセス内の処理になるので、スケジューリングを最適化できる。スケジューラはネットワークポーラーと協同し、I/Oでブロックしているゴルーチンを対象から外すべき時を検知できる。また、GCと統合されているのでGoのプロセスに割り当てられた全てのOSのスレッドに対して必要な処理が適切に割り当てられるようになる